package file

import (
	"github.com/pkg/errors"
	"os"
	"path/filepath"
)

func Write(mod string, name string, bytes []byte) error {
	return nil
}

func Read(mod string, name string) ([]byte, error) {
	path := filepath.Join("files", mod, name)
	bt, err := os.ReadFile(path)
	if err != nil {
		return nil, errors.WithStack(err)
	}
	return bt, nil
}

func Append(mod string, name string, bytes []byte) error {
	path := filepath.Join("files", mod, name)
	// 获取path的上级目录
	dir := filepath.Dir(path)

	// 判断目录是否存在，不存在则创建
	if _, err := os.Stat(dir); os.IsNotExist(err) {
		err = os.MkdirAll(dir, 0755)
		if err != nil {
			return err
		}
	}

	// "os.O_WRONLY": 打开文件以只写模式
	// "os.O_CREATE": 如果文件不存在，那么就创建这个文件
	// "os.O_APPEND": 追加模式
	f, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0644)
	if err != nil {
		return err
	}

	defer f.Close()

	_, err = f.Write(bytes)
	if err != nil {
		return err
	}

	return nil
}
